/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.siteEncheres.client.utilisateur;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.TextBox;
import com.gwtext.client.widgets.MessageBox;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.form.Label;
import com.gwtext.client.widgets.layout.HorizontalLayout;
import com.gwtext.client.widgets.layout.VerticalLayout;
import domain.Utilisateur;
import org.siteEncheres.client.DoubleBox;

/**
 *
 * @author Francois
 */
public class IhmSupprimerUtilisateur extends Panel {

    private TextBox txtNomProprio = new TextBox();
    private TextBox txtPrenomProprio = new TextBox();
    private TextBox txtNumCompte = new TextBox();
    private TextBox txtCodeBanque = new TextBox();
    private TextBox txtCodeGuichet = new TextBox();
    private TextBox txtCleRib = new TextBox();
    
    private int idUtilisateurEnCours;
    
    final AsyncCallback<Utilisateur> callbackGetUtilisateurEnCours = new AsyncCallback<Utilisateur>() {

        @Override
        public void onSuccess(Utilisateur result) {
            idUtilisateurEnCours = result.getIdUtilisateur();
        }

        @Override
        public void onFailure(Throwable caught) {
            MessageBox.alert(caught.getMessage());
        }
    };
    
    final AsyncCallback callbackBouton = new AsyncCallback() {

        @Override
        public void onSuccess(Object result) {
            MessageBox.alert("Débit réussi");
        }

        @Override
        public void onFailure(Throwable caught) {
            MessageBox.alert(caught.getMessage());
        }
    };
    
    public IhmSupprimerUtilisateur() {
         setAutoScroll(true);
        setBorder(false);
        setFrame(true);
        setLayout(new VerticalLayout(10));
        //setHeight(200);
        
        //////////////// panelNP \\\\\\\\\\\\\\\\
        Panel panelNP = new Panel();
        panelNP.setBorder(false);
        panelNP.setLayout(new HorizontalLayout(20));

        Panel pNom = new Panel();
        pNom.setLayout(new VerticalLayout());
        pNom.add(new Label("Nom"));
        pNom.add(txtNomProprio);

        Panel pPrenom = new Panel();
        pPrenom.setLayout(new VerticalLayout());
        pPrenom.add(new Label("Prenom"));
        pPrenom.add(txtPrenomProprio);

        panelNP.add(pNom);
        panelNP.add(pPrenom);
        add(panelNP);
        

        //////////// panel RIB /////////////////
        Panel panelNumCompte = new Panel();
        panelNumCompte.setBorder(false);
        panelNumCompte.setLayout(new HorizontalLayout(20));

        panelNumCompte.add(new Label("Numero de Compte"));
        panelNumCompte.add(txtNumCompte);
        add(panelNumCompte);
        
        Panel codeBanque = new Panel();
        codeBanque.setBorder(false);
        codeBanque.setLayout(new HorizontalLayout(30));
        codeBanque.add(new Label("Code Banque"));
        codeBanque.add(txtCodeBanque);
        
        Panel codeGuichet = new Panel();
        codeGuichet.setBorder(false);
        codeGuichet.setLayout(new HorizontalLayout(20));
        codeGuichet.add(new Label("Code Guichet"));
        codeGuichet.add(txtCodeGuichet);
        
        Panel cleRib = new Panel();
        cleRib.setBorder(false);
        cleRib.setLayout(new HorizontalLayout(20));
        cleRib.add(new Label("Cle rib"));
        cleRib.add(txtCleRib);

        add(codeBanque);
        add(codeGuichet);
        add(cleRib);
        //////////////////////////////////////////////
        
        addListener(new PanelListenerSupprimer());
        Button bouton = new Button("OK");
        add(bouton);
        
        //On recupere l utilisateur en cours pour savoir quel compte
        //crediter.
        bouton.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent w) {

                //Si les champs obligatoires sont vides
                if(!verifChampsVide()){
                    MessageBox.alert("Un ou plusieurs champs sont vide.\nVeuillez les renseigner.");
                }
                else{
                    getService().supprimerUtilisateur(txtNomProprio.getText(), txtPrenomProprio.getText(),
                            txtCodeBanque.getText(), txtCodeGuichet.getText(), txtNumCompte.getText(),
                            txtCleRib.getText(), idUtilisateurEnCours, callbackBouton);
                }
            }
        });
    }
    
    public static GwtUtilisateurAsync getService() {
        return GWT.create(GwtUtilisateur.class);
    }
    
    private class PanelListenerSupprimer extends PanelListenerAdapter {

        @Override
        public void onExpand(Panel panel) {
            txtNomProprio.setText("");
            txtPrenomProprio.setText("");
            txtCodeBanque.setText("");
            txtCodeGuichet.setText("");
            txtCleRib.setText("");
            txtNumCompte.setText("");
        }
    }
    
    /**
     * 
     * @return vrai si les champs obligatoires ont ete remplis, faux sinon.
     */
    public boolean verifChampsVide() {
        if (txtNomProprio.getText().compareTo("") == 0) {
            return false;
        }
        if (txtPrenomProprio.getText().compareTo("") == 0) {
            return false;
        }
        if (txtCleRib.getText().compareTo("") == 0) {
            return false;
        }
        if (txtCodeBanque.getText().compareTo("") == 0) {
            return false;
        }
        if (txtCodeGuichet.getText().compareTo("") == 0) {
            return false;
        }
        if (txtNumCompte.getText().compareTo("") == 0) {
            return false;
        }
        return true;
    }
}
